`security()` revisited [PineCoders]NOTE
The non-repainting technique in this publication that relies on bar states is now deprecated, as we have identified inconsistencies that undermine its credibility as a universal solution. The outputs that use the technique are still available for reference in this publication. However, we do not endorse its usage. See this publication for more information about the current best practices for requesting HTF data and why they work.
█ OVERVIEW
This script presents a new function to help coders use security() in both repainting and non-repainting modes. We revisit this often misunderstood and misused function, and explain its behavior in different contexts, in the hope of dispelling some of the coder lure surrounding it. The function is incredibly powerful, yet misused, it can become a dangerous WMD and an instrument of deception, for both coders and traders.
We will discuss:
• How to use our new `f_security()` function.
• The behavior of Pine code and security() on the three very different types of bars that make up any chart.
• Why what you see on a chart is a simulation, and should be taken with a grain of salt.
• Why we are presenting a new version of a function handling security() calls.
• Other topics of interest to coders using higher timeframe (HTF) data.
█ WARNING
We have tried to deliver a function that is simple to use and will, in non-repainting mode, produce reliable results for both experienced and novice coders. If you are a novice coder, stick to our recommendations to avoid getting into trouble, and DO NOT change our `f_security()` function when using it. Use `false` as the function's last argument and refrain from using your script at smaller timeframes than the chart's. To call our function to fetch a non-repainting value of close from the 1D timeframe, use:
f_security(_sym, _res, _src, _rep) => security(_sym, _res, _src )
previousDayClose = f_security(syminfo.tickerid, "D", close, false)
If that's all you're interested in, you are done.
If you choose to ignore our recommendation and use the function in repainting mode by changing the `false` in there for `true`, we sincerely hope you read the rest of our ramblings before you do so, to understand the consequences of your choice.
Let's now have a look at what security() is showing you. There is a lot to cover, so buckle up! But before we dig in, one last thing.
What is a chart?
A chart is a graphic representation of events that occur in markets. As any representation, it is not reality, but rather a model of reality. As Scott Page eloquently states in The Model Thinker : "All models are wrong; many are useful". Having in mind that both chart bars and plots on our charts are imperfect and incomplete renderings of what actually occurred in realtime markets puts us coders in a place from where we can better understand the nature of, and the causes underlying the inevitable compromises necessary to build the data series our code uses, and print chart bars.
Traders or coders complaining that charts do not reflect reality act like someone who would complain that the word "dog" is not a real dog. Let's recognize that we are dealing with models here, and try to understand them the best we can. Sure, models can be improved; TradingView is constantly improving the quality of the information displayed on charts, but charts nevertheless remain mere translations. Plots of data fetched through security() being modelized renderings of what occurs at higher timeframes, coders will build more useful and reliable tools for both themselves and traders if they endeavor to perfect their understanding of the abstractions they are working with. We hope this publication helps you in this pursuit.
█ FEATURES
This script's "Inputs" tab has four settings:
• Repaint : Determines whether the functions will use their repainting or non-repainting mode.
Note that the setting will not affect the behavior of the yellow plot, as it always repaints.
• Source : The source fetched by the security() calls.
• Timeframe : The timeframe used for the security() calls. If it is lower than the chart's timeframe, a warning appears.
• Show timeframe reminder : Displays a reminder of the timeframe after the last bar.
█ THE CHART
The chart shows two different pieces of information and we want to discuss other topics in this section, so we will be covering:
A — The type of chart bars we are looking at, indicated by the colored band at the top.
B — The plots resulting of calling security() with the close price in different ways.
C — Points of interest on the chart.
A — Chart bars
The colored band at the top shows the three types of bars that any chart on a live market will print. It is critical for coders to understand the important distinctions between each type of bar:
1 — Gray : Historical bars, which are bars that were already closed when the script was run on them.
2 — Red : Elapsed realtime bars, i.e., realtime bars that have run their course and closed.
The state of script calculations showing on those bars is that of the last time they were made, when the realtime bar closed.
3 — Green : The realtime bar. Only the rightmost bar on the chart can be the realtime bar at any given time, and only when the chart's market is active.
Refer to the Pine User Manual's Execution model page for a more detailed explanation of these types of bars.
B — Plots
The chart shows the result of letting our 5sec chart run for a few minutes with the following settings: "Repaint" = "On" (the default is "Off"), "Source" = `close` and "Timeframe" = 1min. The five lines plotted are the following. They have progressively thinner widths:
1 — Yellow : A normal, repainting security() call.
2 — Silver : Our recommended security() function.
3 — Fuchsia : Our recommended way of achieving the same result as our security() function, for cases when the source used is a function returning a tuple.
4 — White : The method we previously recommended in our MTF Selection Framework , which uses two distinct security() calls.
5 — Black : A lame attempt at fooling traders that MUST be avoided.
All lines except the first one in yellow will vary depending on the "Repaint" setting in the script's inputs. The first plot does not change because, contrary to all other plots, it contains no conditional code to adapt to repainting/no-repainting modes; it is a simple security() call showing its default behavior.
C — Points of interest on the chart
Historical bars do not show actual repainting behavior
To appreciate what a repainting security() call will plot in realtime, one must look at the realtime bar and at elapsed realtime bars, the bars where the top line is green or red on the chart at the top of this page. There you can see how the plots go up and down, following the close value of each successive chart bar making up a single bar of the higher timeframe. You would see the same behavior in "Replay" mode. In the realtime bar, the movement of repainting plots will vary with the source you are fetching: open will not move after a new timeframe opens, low and high will change when a new low or high are found, close will follow the last feed update. If you are fetching a value calculated by a function, it may also change on each update.
Now notice how different the plots are on historical bars. There, the plot shows the close of the previously completed timeframe for the whole duration of the current timeframe, until on its last bar the price updates to the current timeframe's close when it is confirmed (if the timeframe's last bar is missing, the plot will only update on the next timeframe's first bar). That last bar is the only one showing where the plot would end if that timeframe's bars had elapsed in realtime. If one doesn't understand this, one cannot properly visualize how his script will calculate in realtime when using repainting. Additionally, as published scripts typically show charts where the script has only run on historical bars, they are, in fact, misleading traders who will naturally assume the script will behave the same way on realtime bars.
Non-repainting plots are more accurate on historical bars
Now consider this chart, where we are using the same settings as on the chart used to publish this script, except that we have turned "Repainting" off this time:
The yellow line here is our reference, repainting line, so although repainting is turned off, it is still repainting, as expected. Because repainting is now off, however, plots on historical bars show the previous timeframe's close until the first bar of a new timeframe, at which point the plot updates. This correctly reflects the behavior of the script in the realtime bar, where because we are offsetting the series by one, we are always showing the previously calculated—and thus confirmed—higher timeframe value. This means that in realtime, we will only get the previous timeframe's values one bar after the timeframe's last bar has elapsed, at the open of the first bar of a new timeframe. Historical and elapsed realtime bars will not actually show this nuance because they reflect the state of calculations made on their close , but we can see the plot update on that bar nonetheless.
► This more accurate representation on historical bars of what will happen in the realtime bar is one of the two key reasons why using non-repainting data is preferable.
The other is that in realtime, your script will be using more reliable data and behave more consistently.
Misleading plots
Valiant attempts by coders to show non-repainting, higher timeframe data updating earlier than on our chart are futile. If updates occur one bar earlier because coders use the repainting version of the function, then so be it, but they must then also accept that their historical bars are not displaying information that is as accurate. Not informing script users of this is to mislead them. Coders should also be aware that if they choose to use repainting data in realtime, they are sacrificing reliability to speed and may be running a strategy that behaves very differently from the one they backtested, thus invalidating their tests.
When, however, coders make what are supposed to be non-repainting plots plot artificially early on historical bars, as in examples "c4" and "c5" of our script, they would want us to believe they have achieved the miracle of time travel. Our understanding of the current state of science dictates that for now, this is impossible. Using such techniques in scripts is plainly misleading, and public scripts using them will be moderated. We are coding trading tools here—not video games. Elementary ethics prescribe that we should not mislead traders, even if it means not being able to show sexy plots. As the great Feynman said: You should not fool the layman when you're talking as a scientist.
You can readily appreciate the fantasy plot of "c4", the thinnest line in black, by comparing its supposedly non-repainting behavior between historical bars and realtime bars. After updating—by miracle—as early as the wide yellow line that is repainting, it suddenly moves in a more realistic place when the script is running in realtime, in synch with our non-repainting lines. The "c5" version does not plot on the chart, but it displays in the Data Window. It is even worse than "c4" in that it also updates magically early on historical bars, but goes on to evaluate like the repainting yellow line in realtime, except one bar late.
Data Window
The Data Window shows the values of the chart's plots, then the values of both the inside and outside offsets used in our calculations, so you can see them change bar by bar. Notice their differences between historical and elapsed realtime bars, and the realtime bar itself. If you do not know about the Data Window, have a look at this essential tool for Pine coders in the Pine User Manual's page on Debugging . The conditional expressions used to calculate the offsets may seem tortuous but their objective is quite simple. When repainting is on, we use this form, so with no offset on all bars:
security(ticker, i_timeframe, i_source )
// which is equivalent to:
security(ticker, i_timeframe, i_source)
When repainting is off, we use two different and inverted offsets on historical bars and the realtime bar:
// Historical bars:
security(ticker, i_timeframe, i_source )
// Realtime bar (and thus, elapsed realtime bars):
security(ticker, i_timeframe, i_source )
The offsets in the first line show how we prevent repainting on historical bars without the need for the `lookahead` parameter. We use the value of the function call on the chart's previous bar. Since values between the repainting and non-repainting versions only differ on the timeframe's last bar, we can use the previous value so that the update only occurs on the timeframe's first bar, as it will in realtime when not repainting.
In the realtime bar, we use the second call, where the offsets are inverted. This is because if we used the first call in realtime, we would be fetching the value of the repainting function on the previous bar, so the close of the last bar. What we want, instead, is the data from the previous, higher timeframe bar , which has elapsed and is confirmed, and thus will not change throughout realtime bars, except on the first constituent chart bar belonging to a new higher timeframe.
After the offsets, the Data Window shows values for the `barstate.*` variables we use in our calculations.
█ NOTES
Why are we revisiting security() ?
For four reasons:
1 — We were seeing coders misuse our `f_secureSecurity()` function presented in How to avoid repainting when using security() .
Some novice coders were modifying the offset used with the history-referencing operator in the function, making it zero instead of one,
which to our horror, caused look-ahead bias when used with `lookahead = barmerge.lookahead_on`.
We wanted to present a safer function which avoids introducing the dreaded "lookahead" in the scripts of unsuspecting coders.
2 — The popularity of security() in screener-type scripts where coders need to use the full 40 calls allowed per script made us want to propose
a solid method of allowing coders to offer a repainting/no-repainting choice to their script users with only one security() call.
3 — We wanted to explain why some alternatives we see circulating are inadequate and produce misleading behavior.
4 — Our previous publication on security() focused on how to avoid repainting, yet many other considerations worthy of attention are not related to repainting.
Handling tuples
When sending function calls that return tuples with security() , our `f_security()` function will not work because Pine does not allow us to use the history-referencing operator with tuple return values. The solution is to integrate the inside offset to your function's arguments, use it to offset the results the function is returning, and then add the outside offset in a reassignment of the tuple variables, after security() returns its values to the script, as we do in our "c2" example.
Does it repaint?
We're pretty sure Wilder was not asked very often if RSI repainted. Why? Because it wasn't in fashion—and largely unnecessary—to ask that sort of question in the 80's. Many traders back then used daily charts only, and indicator values were calculated at the day's close, so everybody knew what they were getting. Additionally, indicator values were calculated by generally reputable outfits or traders themselves, so data was pretty reliable. Today, almost anybody can write a simple indicator, and the programming languages used to write them are complex enough for some coders lacking the caution, know-how or ethics of the best professional coders, to get in over their heads and produce code that does not work the way they think it does.
As we hope to have clearly demonstrated, traders do have legitimate cause to ask if MTF scripts repaint or not when authors do not specify it in their script's description.
► We recommend that authors always use our `f_security()` with `false` as the last argument to avoid repainting when fetching data dependent on OHLCV information. This is the only way to obtain reliable HTF data. If you want to offer users a choice, make non-repainting mode the default, so that if users choose repainting, it will be their responsibility. Non-repainting security() calls are also the only way for scripts to show historical behavior that matches the script's realtime behavior, so you are not misleading traders. Additionally, non-repainting HTF data is the only way that non-repainting alerts can be configured on MTF scripts, as users of MTF scripts cannot prevent their alerts from repainting by simply configuring them to trigger on the bar's close.
Data feeds
A chart at one timeframe is made up of multiple feeds that mesh seamlessly to form one chart. Historical bars can use one feed, and the realtime bar another, which brokers/exchanges can sometimes update retroactively so that elapsed realtime bars will reappear with very slight modifications when the browser's tab is refreshed. Intraday and daily chart prices also very often originate from different feeds supplied by brokers/exchanges. That is why security() calls at higher timeframes may be using a completely different feed than the chart, and explains why the daily high value, for example, can vary between timeframes. Volume information can also vary considerably between intraday and daily feeds in markets like stocks, because more volume information becomes available at the end of day. It is thus expected behavior—and not a bug—to see data variations between timeframes.
Another point to keep in mind concerning feeds it that when you are using a repainting security() plot in realtime, you will sometimes see discrepancies between its plot and the realtime bars. An artefact revealing these inconsistencies can be seen when security() plots sometimes skip a realtime chart bar during periods of high market activity. This occurs because of races between the chart and the security() feeds, which are being monitored by independent, concurrent processes. A blue arrow on the chart indicates such an occurrence. This is another cause of repainting, where realtime bar-building logic can produce different outcomes on one closing price. It is also another argument supporting our recommendation to use non-repainting data.
Alternatives
There is an alternative to using security() in some conditions. If all you need are OHLC prices of a higher timeframe, you can use a technique like the one Duyck demonstrates in his security free MTF example - JD script. It has the great advantage of displaying actual repainting values on historical bars, which mimic the code's behavior in the realtime bar—or at least on elapsed realtime bars, contrary to a repainting security() plot. It has the disadvantage of using the current chart's TF data feed prices, whereas higher timeframe data feeds may contain different and more reliable prices when they are compiled at the end of the day. In its current state, it also does not allow for a repainting/no-repainting choice.
When `lookahead` is useful
When retrieving non-price data, or in special cases, for experiments, it can be useful to use `lookahead`. One example is our Backtesting on Non-Standard Charts: Caution! script where we are fetching prices of standard chart bars from non-standard charts.
Warning users
Normal use of security() dictates that it only be used at timeframes equal to or higher than the chart's. To prevent users from inadvertently using your script in contexts where it will not produce expected behavior, it is good practice to warn them when their chart is on a higher timeframe than the one in the script's "Timeframe" field. Our `f_tfReminderAndErrorCheck()` function in this script does that. It can also print a reminder of the higher timeframe. It uses one security() call.
Intrabar timeframes
security() is not supported by TradingView when used with timeframes lower than the chart's. While it is still possible to use security() at intrabar timeframes, it then behaves differently. If no care is taken to send a function specifically written to handle the successive intrabars, security() will return the value of the last intrabar in the chart's timeframe, so the last 1H bar in the current 1D bar, if called at "60" from a "D" chart timeframe. If you are an advanced coder, see our FAQ entry on the techniques involved in processing intrabar timeframes. Using intrabar timeframes comes with important limitations, which you must understand and explain to traders if you choose to make scripts using the technique available to others. Special care should also be taken to thoroughly test this type of script. Novice coders should refrain from getting involved in this.
█ TERMINOLOGY
Timeframe
Timeframe , interval and resolution are all being used to name the concept of timeframe. We have, in the past, used "timeframe" and "resolution" more or less interchangeably. Recently, members from the Pine and PineCoders team have decided to settle on "timeframe", so from hereon we will be sticking to that term.
Multi-timeframe (MTF)
Some coders use "multi-timeframe" or "MTF" to name what are in fact "multi-period" calculations, as when they use MAs of progressively longer periods. We consider that a misleading use of "multi-timeframe", which should be reserved for code using calculations actually made from another timeframe's context and using security() , safe for scripts like Duyck's one mentioned earlier, or TradingView's Relative Volume at Time , which use a user-selected timeframe as an anchor to reset calculations. Calculations made at the chart's timeframe by varying the period of MAs or other rolling window calculations should be called "multi-period", and "MTF-anchored" could be used for scripts that reset calculations on timeframe boundaries.
Colophon
Our script was written using the PineCoders Coding Conventions for Pine .
The description was formatted using the techniques explained in the How We Write and Format Script Descriptions PineCoders publication.
Snippets were lifted from our MTF Selection Framework , then massaged to create the `f_tfReminderAndErrorCheck()` function.
█ THANKS
Thanks to apozdnyakov for his help with the innards of security() .
Thanks to bmistiaen for proofreading our description.
Look first. Then leap.
ابحث في النصوص البرمجية عن "relative volume"
Long Elite Squeeze (LES) — H.H 22 Lindsay (AI)LES (Long Elite Squeeze)
LES (Long Elite Squeeze) is a trading framework designed to capture the highest-probability long setups. It’s not just another signal script — it’s a structured system built to filter noise, manage risk, and keep you aligned with real momentum.
🔹 Core Logic
Breakout Confirmation – Ensures moves have structure, not just random spikes.
Relative Volume (RVOL) – Confirms participation and fuel behind the move.
RSI Alignment – Avoids overextended traps and fakeouts.
Squeeze Momentum – The backbone of LES. Signals fire only after a defined squeeze pattern shift (6+ dark green bars followed by a light green bar).
🔹 Trade Management Built In
Automated Sell Signals – Trigger on either:
2 consecutive dark green bars on Squeeze Momentum
WaveTrend cross down
(only valid after a Buy signal — no random shorts)
HUD Entry Checklist – Live conditions shown on chart.
Status Tracker HUD – Flips between “Waiting for Entry” and “In Trade” for clear context.
🔹 Flexibility
3 switchable squeeze versions (V1, V2, V3) for different market conditions.
Customizable EMA & ATR settings (with color options).
Session-aware logic — filter signals to prime trading hours.
🔹 Blueprint & Credits
LES is a fusion of proven concepts, standing on the shoulders of respected creators:
-Squeeze Momentum – LazyBear
-WaveTrend Oscillator – LazyBear
-Relative Volume – LonesomeTheBlue
Breakout/structural logic – refined from classic frameworks
Their work laid the foundation — LES expands and integrates them into a complete trading system.
⚡ Why LES Stands Out
LES wasn’t coded overnight. It’s the result of countless hours of live testing, rebuilding, and refining. Every feature earned its place by proving value in real trading, not theory.
LES is more than an indicator. It’s a disciplined framework — crafted to turn chaos into structure, randomness into probability, and noise into clarity.
⚠️ Disclaimer: This is a trading framework, not financial advice. Performance depends on trader discipline, risk management, and market conditions.
Alt Szn Oracle - Institutional GradeThe Alt Szn Oracle is a macro-level indicator built to help traders front-run altseason by tracking liquidity, dominance rotation, sentiment, and capital flows—all in one signal. It’s designed for those who don’t just chase pumps, but want to understand when the tide is turning and why. This tool doesn't predict specific coin breakouts—it tells you when the market as a whole is gearing up to rotate into higher beta assets like altcoins, including memes and microcaps.
The index consolidates ten macro inputs into a normalized, smoothed score from 0–100. These include Bitcoin and Ethereum dominance, ETH/BTC, altcoin market cap (Total3), relative volume flows, and stablecoin supply (USDT, USDC, DAI)—which act as proxies for risk-on appetite and dry powder entering the system. It also incorporates manually updated sentiment metrics from Google Trends and the Fear & Greed Index, giving it a behavioral edge that most indicators lack.
The logic is simple but powerful: when BTC dominance is falling, ETH/BTC is rising, altcoin volume increases relative to BTC/ETH, and stablecoins start moving—you're likely in the early innings of rotation. The index is also filtered through a volatility threshold and smoothed with an EMA to eliminate chop and fakeouts.
Use this indicator on macro charts like TOTAL3, TOTAL2, or ETHBTC to gauge market health, or overlay it on specific coins like PEPE, DOGE, or SOL to confirm if the tide is in your favor. Interpreting the score is straightforward: readings above 80 suggest euphoria and signal it’s time to de-risk, 60–80 indicates expansion and confirms altseason is underway, 40–60 is neutral, and 20–40 is a capitulation zone where smart money accumulates.
What sets this apart is that it doesn’t just track price—it reflects the flow of capital, the positioning of liquidity, and the sentiment of the crowd. Most altseason indicators are lagging, overfitted, or too simplistic. This one is modular, forward-looking, and grounded in real capital rotation theory.
If you're a trader who wants to time the cycle, not guess it, this is your tool. Refine it, fork it, or expand it to your niche—DeFi, NFTs, meme coins, or L1s. It’s a framework for reading the macro winds, not a signal service. Use it with discipline, and you’ll catch the wave while others drown in noise.
Hull Moving Average Adaptive RSI (Ehlers)Hull Moving Average Adaptive RSI (Ehlers)
The Hull Moving Average Adaptive RSI (Ehlers) is an enhanced trend-following indicator designed to provide a smooth and responsive view of price movement while incorporating an additional momentum-based analysis using the Adaptive RSI.
Principle and Advantages of the Hull Moving Average:
- The Hull Moving Average (HMA) is known for its ability to track price action with minimal lag while maintaining a smooth curve.
- Unlike traditional moving averages, the HMA significantly reduces noise and responds faster to market trends, making it highly effective for detecting trend direction and changes.
- It achieves this by applying a weighted moving average calculation that emphasizes recent price movements while smoothing out fluctuations.
Why the Adaptive RSI Was Added:
- The core HMA line remains the foundation of the indicator, but an additional analysis using the Adaptive RSI has been integrated to provide more meaningful insights into momentum shifts.
- The Adaptive RSI is a modified version of the traditional Relative Strength Index that dynamically adjusts its sensitivity based on market volatility.
- By incorporating the Adaptive RSI, the HMA visually represents whether momentum is strengthening or weakening, offering a complementary layer of analysis.
How the Adaptive RSI Influences the Indicator:
- High Adaptive RSI (above 65): The market may be overbought, or bullish momentum could be fading. The HMA turns shades of red, signaling a possible exhaustion phase or potential reversals.
- Neutral Adaptive RSI (around 50): The market is in a balanced state, meaning neither buyers nor sellers are in clear control. The HMA takes on grayish tones to indicate this consolidation.
- Low Adaptive RSI (below 35): The market may be oversold, or bearish momentum could be weakening. The HMA shifts to shades of blue, highlighting potential recovery zones or trend slowdowns.
Why This Combination is Powerful:
- While the HMA excels in tracking trends and reducing lag, it does not provide information about momentum strength on its own.
- The Adaptive RSI bridges this gap by adding a clear visual layer that helps traders assess whether a trend is likely to continue, consolidate, or reverse.
- This makes the indicator particularly useful for spotting trend exhaustion and confirming momentum shifts in real-time.
Best Use Cases:
- Works effectively on timeframes from 1 hour (1H) to 1 day (1D), making it suitable for swing trading and position trading.
- Particularly useful for trading indices (SPY), stocks, forex, and cryptocurrencies, where momentum shifts are frequent.
- Helps identify not just trend direction but also whether that trend is gaining or losing strength.
Recommended Complementary Indicators:
- Adaptive Trend Finder: Helps identify the dominant long-term trend.
- Williams Fractals Ultimate: Provides key reversal points to validate trend shifts.
- RVOL (Relative Volume): Confirms significant moves based on volume strength.
This enhanced HMA with Adaptive RSI provides a powerful, intuitive visual tool that makes trend analysis and momentum interpretation more effective and efficient.
This indicator is for educational and informational purposes only. It should not be considered financial advice or a guarantee of performance. Always conduct your own research and use proper risk management when trading. Past performance does not guarantee future results.
Candlestick DataCandlestick Data Indicator
The Candlestick Data indicator provides a comprehensive overview of key metrics for analyzing price action and volume in real-time. This overlay indicator displays essential candlestick data and calculations directly on your chart, offering an all-in-one toolkit for traders seeking in-depth insights.
Key Features:
Price Metrics: View the daily high, low, close, and percentage change.
Volume Insights: Analyze volume, relative volume, and volume buzz for breakout or consolidation signals.
Range Analysis: Includes closing range, distance from low of day (LoD), and percentage change in daily range expansion.
Advanced Metrics: Calculate ADR% (Average Daily Range %), ATR (Average True Range), and % from 52-week high.
Moving Averages: Supports up to four customizable moving averages (EMA or SMA) with distance from price.
Market Context: Displays the sector and industry group for the asset.
This indicator is fully customizable, allowing you to toggle on or off specific metrics to suit your trading style. Designed for active traders, it brings critical data to your fingertips, streamlining decision-making and enhancing analysis.
Perfect for momentum, swing, and day traders looking to gain a data-driven edge!
RVWAP ENHANCED**Rolling VWAP with Alerts and Markers**
This Pine Script indicator enhances the traditional Rolling VWAP (Relative Volume Weighted Average Price) by adding dynamic features for improved visualization and alerting.
### Features:
1. **Dynamic VWAP Line Coloring**:
- The VWAP line changes color based on the relationship with the closing price:
- **Green** when the price is above the VWAP.
- **Red** when the price is below the VWAP.
2. **Candle and Background Coloring**:
- **Candles**: Colored green if the close is above the VWAP and red if below.
- **Background**: Subtle green or red shading indicates the price’s position relative to the VWAP.
3. **Alerts**:
- Alerts notify users when the VWAP changes direction:
- "VWAP Turned Green" for price crossing above the VWAP.
- "VWAP Turned Red" for price crossing below the VWAP.
4. **Small Dot Markers**:
- Tiny dots are plotted below the candles to mark VWAP state changes:
- **Green dot** for VWAP turning green.
- **Red dot** for VWAP turning red.
5. **Custom Time Period**:
- Users can select either a dynamic time period based on the chart's timeframe or a fixed time period (customizable in days, hours, and minutes).
6. **Standard Deviation Bands (Optional)**:
- Standard deviation bands around the VWAP can be enabled for further analysis.
This script is designed to provide clear and actionable insights into market trends using the RVWAP, making it an excellent tool for traders who rely on volume-based price action analysis.
RVol Over Time [vnhilton]I recommend to do the following to give you indicator values at a better glance & for a cleaner chart: 1) Turn off labels on price scale. 2) Turn down opacity for Rvol-O-T down to 0%. 3) Move the indicator to the chart pane or to the volume pane. 4) Pin the indicator to scale A (same scale as the price chart/pane). Now you can only see the RVol-O-T on the top left.
Relative Volume (RVol) is an indicator that compares current volume with Average Daily Volume (ADV) for a set period of time. This can be used to find tickers in play, as those trading with an RVol >1 means it's trading above average volume, which may be worthy of your attention.
This indicator calculates RVol as the day progresses, which may be useful if you have strategies with an intraday criterion e.g. the ticker needs to be trading at Rvol > 2, 30 minutes after the open for stocks (You can see RVol in % or float form).
The chart snapshot image above shows BTCUSDT. Reason for this ticker is because for cryptocurrencies & forex pairs, market data is complete so this indicator can work correctly. If you try this indicator on stocks, indices or futures, you may notice that there's a discrepancy between daily volume candles & the summation of intraday candles (they don't equate each other - huge difference between the 2), causing the indicator to not work as effectively. To solve this problem, you would have to get extra market data from TradingView, or to integrate your broker with TradingView to pass along your broker's data feed (provided your broker also has real-time data - if not you may need to get extra market data via the broker).
VP and POCThis code is credited to juliangonzaconde. Have taken his help to modify his beautiful creation.
Volume profile is a key study when comes to understanding the auction trading process. Volume Profiles will show you exactly how much volume, as well as relative volume, occurred at each price as well as the exact number of contracts for the entire session. It is a visualization tool to understand the high activity zone and low activity zone.
Volume profile measures the confidence of the traders in the market. From short term trading perspective monitoring the developing volume profile in realtime make more sense to track current market participation behavior to take better trading decisions.
Hope this helps you in trading on daily timeframe.
Happy Trading.
Delta-RSI Strategy (with filters)Delta-RSI Strategy (with filters):
This is a version of the Delta-RSI Oscillator strategy with several criteria available to filter entry and exit signals. This script is also suitable for backtesting over a user-defined period and offers several risk management options (take profit and stop loss).
Since the publication of the Delta-RSI Oscillator script, I have been asked many times to make it compatible with the Strategy Tester and add filtering criteria to minimize "false" signals. This version covers many of these requests. Feel free to insert your favorite D-RSI parameters and play around!
ABOUT DELTA-RSI
Delta-RSI represents a smoothed time derivative of the RSI designed as a momentum indicator (see links below):
INPUT DESCTIPTION
MODEL PARAMETERS
Polynomial Order : The order of local polynomial used to interpolate the relative strength index (RSI).
Length : The length of the lookback frame where local regression is applied.
RSI Length : The timeframe of RSI used as input.
Signal Length : The signal line is a EMA of the D-RSI time series. This input parameter defines the EMA length.
ALLOWED ENTRIES
The strategy can include long entries, short entries or both.
ENTRY AND EXIT CONDITIONS
Zero-crossing : bullish trade signal triggered when D-RSI crosses zero from negative to positive values (bearish otherwise)
Signal Line Crossing : bullish trade signal triggered when D-RSI crosses from below to above the signal line (bearish otherwise)
Direction Change : bullish trade signal triggered when D-RSI was negative and starts ascending (bearish otherwise)
APPLY FILTERS TO
The filters (described below) can be applied to long entry, short entry and exit signals.
RELATIVE VOLUME FILTER
When activated, the D-RSI-driven entries and exits will be triggered only if the current volume is greater than N times the average over the last M bars.
VOLATILITY FILTER
When activated, the D-RSI-driven entries and exits will be triggered only if the N-period average true range, ATR, is greater than the M-period ATR. If N < M, this condition implies increasing volatility.
OVERBOUGHT/OVERSOLD FILTER
When activated, the D-RSI-driven entries and exits will be triggered only if the value of 14-period RSI is in the range between N and M.
STOP LOSS/TAKE PROFIT
Fixed and trailing stop loss as well as take profit options are available.
FIXED BACKTESTING START/END DATES
If the checkboxes are not checked, the strategy will backtest all available price bars.
DTR vs ATR w RVolDTR vs ART along with Relative Volume in Percentage. So if you see RVol as 200% with input length of 10 days, today's volume is 2x compared to past 10 days. It helps if today's volume is already reached 20% or 30% within 30mins of market open, etc.
volume changesThis is based upon Daveatt script
I change the volume to VPT as I see this as more accurate .. the rest is same
Thanks Dave you have the best script here:)
green is bullish
red is bearish
I just wonder if we can filter some bad signals? then it would be much better
simple trend Scanner Dashboard Script Does
- Calculates key metrics:
- Percent Change from previous day
- Relative Volume (% vs 10-bar average)
- RSI and ADX for strength/trend
- 20 EMA for dynamic support/resistance
- Classifies market condition:
- 🟢 Strong if RSI > 60 and ADX > 25
- 🔴 Weak if RSI < 40 and ADX < 20
- ⚪ Neutral otherwise
- Displays a table dashboard:
- Compact, color-coded summary of all metrics
- Easy to scan visually
- Plots visual signals:
- Arrows and triangles for percent change and volume spikes
- Data window plots for deeper inspection
ATR Squeeze BackgroundThis simple but powerful indicator shades the background of your chart whenever volatility contracts, based on a custom comparison of fast and slow ATR (Average True Range) periods.
By visualizing low-volatility zones, you can:
* Identify moments of compression that may precede explosive price moves
* Stay out of choppy, low-momentum periods
* Adapt this as a component in a broader volatility or breakout strategy
🔧 How It Works
* A Fast ATR (default: 7 periods) and a Slow ATR (default: 40 periods) are calculated
* When the Fast ATR is lower than the Slow ATR, the background is shaded in blue
* This shading signals a contraction in volatility — a condition often seen before breakouts or strong directional moves
⚡️ Why This Matters
Many experienced traders pay close attention to volatility cycles. This background indicator helps visualize those cycles at a glance. It's minimal, non-intrusive, and easy to combine with your existing tools.
🙏 Credits
This script borrows core logic from the excellent “Relative Volume at Time” script by TradingView. Credit is given with appreciation.
⚠️ Disclaimer
This script is for educational purposes only.
It does not constitute financial advice, and past performance is not indicative of future results. Always do your own research and test strategies before making trading decisions.
Consecutive count backtester / quantifytools- Overview
Consecutive counting is a simple method to mechanically define trending states to the upside and downside. Consecutive counts are calculated by taking reference price level (e.g. close 4 candles ago) and count closes above/below it up to a maximum count that resets the consecutive count back to 1. This tool provides the means to backtest each count by measuring % change in price after each count (e.g. % gain 2 candles after a given count).
Users can define reference source that starts the consecutive count (e.g. close 4 candles ago), maximum count where counter resets (e.g. after 9th count) and backtesting period (e.g. price change 2 candles after count).
Filters add extra conditions that must be met on the consecutive count to qualify as valid, which are also reflected on the backtest metrics. The counts can be refined using the following filters:
- RSI above/below X
- Price above/below/at moving average of choice
- Relative volume above/below X
Average gain corresponding to each count as they occur can be toggled off for less clutter. Average price change can also be visualized using candle color. Colors, gradient and table/label sizes are fully customizable.
- Practical guide
Example #1: Identify reversal potential
Consecutive counting is a simple yet effective method to for detecting reversals, for which 7-9 counts are traditionally used. Whether that holds true or not can now be put through a test with different variations of the method as well as using additional filters to improve the probability of a turn.
Example #2: Identify trend following potential
Consecutive counts can also have utility value for trend following. When historical short term change is to the downside, expect downside, when to the upside, expect upside.
CANDLE LEVELS [PRO]This indicator provides you with 55 levels! with labels to help you identify quickly where current price is in relation to the OPEN, CLOSE, HIGH OF DAY and LOW OF DAY to a respective level. Choose from levels as low as the 5 minute time frame all the way up to 200 days. All of the levels except the day's OPEN, HIGH OF DAY AND LOW OF DAY use the PREVIOUS time frame's level. In other words, when you're looking at the "1 DAY HIGH", that's actually the previous day's HIGH OF DAY. Whether you're a scalper on the lower time frames or a swing trader that mainly uses the 1 hour and above, these candle levels can be an invaluable source of support and resistance; in other words you'll often see price bounce off of a level (whether price is increasing or decreasing) once or multiple times and that could be an indication of a price's direction. Another way that you could utilize this indicator is to use it in confluence with other popular signals, such as an EMA crossover. For instance, you could watch as price rises above the 21 EMA all the while price is also crossing up and over the previous day's HIGH OF DAY with a relative volume that's double that of the previous week's average. These are just a few of some potential bullish signals that you could look for to go long on a trade using the candle levels provided.
I've made this indicator extremely customizable:
⚡Each level has 2 labels: 1 "at level" and 1 "at right", each label and price can be disabled
⚡Each label has its own input for label padding. The "at right" label padding input allows you to zoom in and out of a chart without the labels moving along their respective axis
⚡Each label's text can be customized via an "input.string" code base
⚡Each level's label can be changed via a plot style setting to determine if the label is centered with it's respective level or rides along the top of it
⚡Significant figures input allows you to round price up or down
⚡A "bias EMA" tool that color codes the candles and price line to show you where price is in relation to the 21 EMA (or another value that you pick). As a result, this can be an effective visual to help reduce cognitive load
⚡A "fill level" where color is determined by price opening above or below the previous day's close
⚡A "use current close" setting that's great to use in pre-market as it shows you where price is in relation to the previous days' close
----------------------------------------------------------------------------------------------------------------------
🙏Thanks to (c)satymahajan for the inspiration behind the ATR "previous close" and "bias candle" code base
🙏Thanks to my mentor (c)SimpleCryptoLife for the libraries and extensive code to help create this indicator
Moving Average CandlesInspired by Ricardo Santos's " Multiple Moving Average Candle System V0" ()
This script plots 6 moving averages using the plotcandle function rather than the normal plot function. Result is a stylish indicator that shows moving average crossovers in a more visual way. Moving average type options available are , or Simple, Exponential, Hull, Relative, Volume Weighted, and Arnaud Legoux Moving Averages, Linear Regression Curve, and Median. Lengths for each can be set in settings along with selection specific parameters. Good for plotting/visualizing potential entry/exit points based on your preferred moving averages crossing over, or just as some eye candy.
.b pin-up symbolWhen trading cryptocoins, it is necessary to check the price trend of NASDAQ, BTC.D, BTC.OI, BTC spot or other coins of similar groups.
However it is very cumbersome to put a comparison symbol in the Tradingview chart and combine individual indicators one by one.
Moreover even with such a combination, the chart is messy and visibility is not good.
This script was developed as a composite-solution to that situation, and will make you happy.
- NQ1!, USTECH100CFD | symbol fixed
- BTC.Dominance, BTC.OpenInterest, BTC symbol, others pin-up-symbol | selectable
- Pin-up-symbol | selectable
- Pin-up-symbol's candle chart
- Trending
* EMA 9,21,50,200 ribbon classic EMA
* .b price line ; .b price = unique trending price with price-action + relative-volume-action + ATR
* Dynamic S/R Cloud ; BB + donchian band + high/low + atr mixed custom-logic
* VWWMA + .b price Shadow ; Volume-weighted WMA on .b price = unique MA faster than classic VWMA
Trending shadow direction is not bad even on low-timeframe (1, 2, 3, 5m, 15m...)
- Pattern
* Harmonic Pattern ; A simplified version of the harmonic pattern indicator, simply show-up pattern complete position
for reference only - adopted from HeWhoMustNotBeNamed's script.
- Information Panel
* BTC Dominance, BTC Open Interest, Pin-Up-Symbol price
* Trend meter ; 5,15,30,1h,2h,4h Meter Calc with 1 minute-timeframe candles
5 = Green if the current price is higher than the price 5 minutes ago.
1h = Green if the current price is higher than the price 2 hours ago.
4h = Red if the current price is lower than the price 4 hours ago.
* caution ; To use real-time chart of "CME_MINI:NQ1!" you have to additional subscribe CME data,
default setting is 'NQ1!' , you can change to 'USTECH100CFD'
* When you choose symbol which is closed trading hours, the script's update stopped.
Even if the selected pin-up-symbol is on trading hours, the currently selected symbol's chart doesn't update.
* recommended | chart setting > Appearance : Top margin 0%, Bottom margin 0% for optimized screen usage :)
if you have any questions freely contact to me by message on tradingview, or telegram @sr_bt
but please understand that responses may be quite late.
------------------------------------------------------------------------------------------------------------------------------------------------------------
copyright 2022 (sr_b)
Special thanks to all of contributors of community.
The script (originaly .b) may be freely distributed under the MIT license.
The other classic script code also may be freely distributed under the MIT license.
Simplified Harmonic script part | core adopted from 'Multi ZigZag Harmonic Patterns (HeWhoMustNotBeNamed)' MPL2.0 license
Support and Resistance by CainKellyeCheck out my automatic support and resistance indicator that uses the EMA of price change * relative volume as the bases of pivot search.
It also tells the strength of the support and resistance lines calculated using a 4 times quicker EMA and using its distance from the slower one.
The strongest plotted line has the maximum opacity and the weakest has the minimum opacity inside the given range.
This calculation results in an organic detection of the support and resistance prices.
You can set the distance range in percentage you want to have lines calculated around the current price.
You can set the lines gravity distance inside which they are snapped together: the stronger line pulls the weaker to it by using strength weighted average for the new price value.
You can increase the minimum opacity value in case you only see few lines (but the maximum is 15)
You can change the used price for the lines to Close or High/Low but recommended is to use the average of those two (default)
The distances multiplier helps to get a birds eye view easily when using 4H (or higher) chart and a separate one to use on Daily / Weekly / Monthly for even broader view.
Lines and labels are drawn near the candles so you are still able to zoom in.
Labels are not drawn when their line is barely visible (transparency >= 80)
This indicator has been refined on the 15 minute and 1 hour charts of BTC and other cryptos but it works well in smaller volatility markets as well if the distances are adjusted accordingly.
On Beaver Volume SentimentGeneral Market sentiment decoded from two Lazybear OBV's and a CCI.
Lots of strategies with this.
Main point is this indicator tries to be extra sensitive to relative volume changes but keep grounded in sentiment with the cci.
Let me know if you use this!
-Beaverman